1. Technical Field
The present invention generally relates to computer systems and in particular to virtualized environments within computer systems.
2. Background
In a virtualized environment, a layer of software called the hypervisor (also known as the virtual machine monitor) runs between the hardware and the operating system, and provides the appearance or illusion of multiple “virtual” machines (VM), also called partitions. A virtual machine is a virtual data-processing system that appears to have exclusive access of the machine's hardware, but whose functions are accomplished by sharing the hardware resources possibly among other virtual machines that co-exist in the machine. The hardware resources shared within the physical data-processing system include but are not limited to memory, processors, and input/output (I/O) devices.
Virtualized environments enable a plurality of operating systems to run concurrently on the same data-processing system, such that each virtual machine or partition runs exactly one instance of an operating system. Currently, the hypervisor allocates hardware resources such as processors, memory pages, and disks to one or more different partitions utilizing a virtual machine interface. The hypervisor allocates these resources to ensure the one or more partitions do not interfere with one another. Some resources, such as memory pages and CPU cores are allocated among different partitions so that there is no physical sharing of resources between partitions. Other resources, such as the memory bus, coherence bus, scalability ports or memory controllers, by nature cannot be allocated exclusively to any individual partition. The proliferation of multicore processor chips accentuates the problem of non-exclusive allocation. For example, there can be several partitions currently allocated to various cores on the same chip, each of the partitions effectively sharing the same data paths such as the aforementioned buses. Partitions sharing the same data path may suffer from severe performance interference when one partition runs a workload that saturates the shared resources, thereby starving other partitions. For instance, when a workload at the one or more partitions is heavily utilizing memory buses, coherence buses, scalability ports, and/or I/O buses, the performance of the other workloads running on different partitions are adversely affected.